#ifndef VENUS_UI_CONTROLLERS_REFLECTION_EFFECT_CTRL_H
#define VENUS_UI_CONTROLLERS_REFLECTION_EFFECT_CTRL_H

#include "effect_ctrl.h"

namespace venus {
class ReflectionEffect;
class ReflectionEffectCtrlGlut : public EffectCtrlGlut {
 public:
  ReflectionEffectCtrlGlut(ReflectionEffect *effect, 
                           ScalarCtrlTriple reflection_factor)
      : effect_(effect), reflection_factor_(reflection_factor) { }
  virtual ~ReflectionEffectCtrlGlut();
  /*
   * the following methods return true, if the relevant event is handled,
   * return false otherwise, comment method to use default implementation
   */
  //virtual bool OnKeyboard(unsigned char key, int x, int y);
  virtual bool OnSpecialKey(int key, int x, int y);
  //virtual bool OnMouse(int button, int state, int x, int y);
  virtual const Effect *effect() const;
 private:
  bool inc_reflection_factor();
  bool dec_reflection_factor();
 private:
  ReflectionEffect *effect_;
  ScalarCtrlTriple reflection_factor_;
};
} // namespace venus

#endif // VENUS_UI_CONTROLLERS_REFLECTION_EFFECT_CTRL_H
